package com.bowen.demo.demo001.thread;

/**
 * <h3>java-study</h3>
 * <p>继承Thread类，重写该类的run()方法</p>
 * @author : zhang.bw
 * @date : 2020-09-14 14:05
 **/
class MyThread {

	/**
	 * 继承Thread类，通过重写run()方法定义了一个新的线程类MyThread，其中run()方法的方法体代表了线程需要完成的任务，称之为线程执行体。
	 * 当创建此线程类对象时一个新的线程得以创建，并进入到线程新建状态。通过调用线程对象引用的start()方法，
	 * 使得该线程进入到就绪状态，此时此线程并不一定会马上得以执行，这取决于CPU调度时机。
	 */

	/**
	 * 测试方法
	 * @param args
	 */
	public static void main(String[] args) {
		new MyThread().Test();
	}

	public void Test() {
		for (int i = 0; i < 10; i++) {
			System.out.println("test " + Thread.currentThread().getName() + " " + i);
			if (i == 3) {
				// 创建一个新的线程myThread1此线程进入新建状态
				Thread myThread1 = new MyThreadTest();
				// 创建一个新的线程myThread2此线程进入新建状态
				Thread myThread2 = new MyThreadTest();
				// 调用start()方法使得线程进入就绪状态
				myThread1.start();
				// 调用start()方法使得线程进入就绪状态
				myThread2.start();
			}
		}

	}

	class MyThreadTest extends Thread {
		private int i = 0;

		@Override
		public void run() {
			for (i = 0; i < 10; i++) {
				System.out.println("MyThreadTest " + Thread.currentThread().getName() + " " + i);
			}
		}

	}
}
